/**
 * 抖音极速版
 * 
 */

// 导入工具函数
const bizUtils = require('./bizUtils.js');
const { myClick, mySwipeLeft, mySwipeRight, mySwipeDown, mySwipeUp, myRandomInt } = bizUtils;

let bizObj = {};

let utils = require(context.getFilesDir() + "/project/common/" + "utils.js");
let 文字识别插件 = commonStorage.get("文字识别插件") || "谷歌";
utils.initOcr(文字识别插件);

//判断是否在广告页
function isInAdPage(){
    return text("广告").desc("广告").exists();
}

//看广告
function myWatchingAd() {
    console.log('**正在看广告')
    sleep(2000);
    console.log('**是否在广告页：'+ isInAdPage())
    //时间根据界面获取
    let sleepSS = 34000 + myRandomInt(5)*1000;
    
    let leftSS = textContains("后可领取").findOnce();
    if (leftSS) {
        let matchSS = leftSS.text().match(/(\d+)后可领取/);
        if (matchSS) {
            let numSS = matchSS[1];
            console.log("广告剩余时间(秒)为: " + numSS);
            if (numSS) {
                if (numSS > sleepSS && numSS < 61) {
                    sleepSS = numSS * 1000 + 5000;
                }
            }
        }
    }
    console.log("sleep时间(毫秒)为: " + sleepSS);
    sleep(sleepSS);
    console.log('**结束看广告');
}

//关闭广告
function c1_closeAd() {
    sleep(1000);
    // 有可能已跳转到其他页，不在广告页
    var btnBack = id("com.ss.android.ugc.aweme.lite:id/iv_back").desc("返回").className("android.widget.Button").packageName("com.ss.android.ugc.aweme.lite").findOnce();
    if(btnBack){
        myClick(btnBack);
        console.log("已跳转到其他页，不在广告页");
        sleep(1000);
    }

    // 看完广告，关闭广告
    var txt = text("领取成功，关闭，按钮").desc("领取成功，关闭，按钮").className("com.lynx.tasm.behavior.ui.view.UIView").packageName("com.ss.android.ugc.aweme.lite").findOnce();
    if (txt) {
        myClick(txt);
        console.log("点击关闭广告");
        sleep(2000);
    }else{

        //判断是否是直播间,有多种文案 更多直播，游戏频道 
        // let zhibo = text("更多直播").className("android.widget.TextView").packageName("com.kuaishou.nebula").findOnce();
        let zhibo = id("com.kuaishou.nebula.live_audience_plugin:id/live_comment_text_view").text("说点什么...").className("android.widget.TextView").packageName("com.kuaishou.nebula").findOnce();
        if(zhibo){
            id("com.kuaishou.nebula.live_audience_plugin:id/live_close_place_holder").className("android.widget.ImageView").packageName("com.kuaishou.nebula").findOnce().clickCenter();
            sleep(2000);
        }else{
            console.log("!找不到关闭广告");
        }
    }
}

//开宝箱
function c1_clickcheck() {
    var btn = text("开宝箱得金币").desc("开宝箱得金币").findOnce();
    let matchTxt = "/点可领(\d+)金币/";
    
    if(!btn){
      btn = textMatches("\\点可领.*金币").findOnce();
    }
    if (!btn) {
        btn = textStartsWith("看视频最高再领").findOnce();
    }
    
    // 点击宝箱
    if (btn) {
        let match = btn.text().match(/点可领(\d+)金币/);
        if (match) {
            let goldCount = match[1];
            console.log("宝箱金币数量为: " + goldCount);
        }
        myClick(btn); //当控件不能点击时，使用坐标点击
        sleep(1000)
    } else {
        console.log("找不到宝箱");
    }
}

// 点击看广告
function c1_checkMoreAd() {
    //点击广告
    let btn = textContains("去看广告得最高").findOnce();
    let matchTxt = "/金币暴涨 去看广告得最高(\d+)金币/";
    
    if(!btn){
        btn = textStartsWith("看视频再领").findOnce();
        matchTxt = "/看视频再领(\d+)金币/";
    }
    if(!btn){
        btn = textStartsWith("看视频最高再领").findOnce()
        matchTxt = "/看视频最高再领(\d+)金币/";
    }
    if(!btn){
        btn = textStartsWith("看广告视频再赚").findOnce()
        matchTxt = "/看视频最高再领(\d+)金币/";
    }
    
    if (btn) {
        let text = btn.text();
        let match = text.match(matchTxt);
        if (match) {
            let goldCount = match[1];
            console.log("广告金币数量为: " + goldCount);
        }
        myClick(btn);
        myWatchingAd();
    } else {
        console.log("!找不到");
    }
}

//看广告得金币, 大约要10分钟一次
bizObj.seeAdGetIcon = () => {
    console.log("...开始-看广告得金币")
    //点击领福利
    // text("去领取").className("android.widget.TextView").packageName("com.kuaishou.nebula").findOnce().clickCenter();

    // 截图全屏
    let img = captureScreen();
    utils.regionalClickText2(img,0,0,1080,2400,60,255,"去领取",false,false,()=>{ toastLog("找到文字") });
    utils.recycleNull(img);

    sleep(1000);
    //看广告
    myWatchingAd();
    //关闭广告
    c1_closeAd();
    sleep(2000);
    // while
    var isMoreAd = true;
    while (isMoreAd) {
        
        //判断是否继续看广告
        let oneMore = text("领取奖励").findOnce();
        if(oneMore){
            myClick(oneMore);
            
            //看广告
            myWatchingAd();
            
            //关闭广告, 要判断是否是直播间还是普通广告
            c1_closeAd();
            sleep(2000);
            console.log("还有广告，continue while");
            continue;
        }

        
        //判断是否有弹窗
        var txt = text("放弃奖励").findOnce();
        if (txt) {
            //关闭弹窗
            myClick(txt);
            console.log("放弃奖励");
            sleep(1000);
        } else {
            isMoreAd = false;
            console.log("没有广告了");
        }

        //抖音看完广告会出现“评价并收下金币”弹窗
        let  txtFinish = text("评价并收下金币").desc("评价并收下金币").className("com.lynx.tasm.behavior.ui.text.FlattenUIText").packageName("com.ss.android.ugc.aweme.lite").findOnce();
        if(txtFinish){
            isMoreAd = false;
            myClick(txtFinish);
            console.log("评价并收下金币");
        }
    }
    
    console.log("...结束-看广告得金币");
}

//批量看广告得金币，默认一次看10个广告
bizObj.seeAdGetIconList = () => {
    //批量看广告得金币
    let seeCount = 10;
    while (seeCount > 0) {
        seeCount = seeCount - 1;
        bizObj.seeAdGetIcon();
        sleep(5000);
    }
}

//开宝箱
bizObj.openCheck = () => {
    console.log("开宝箱开始...")
    //判断是否可以开宝箱
    //打开宝箱
    c1_clickcheck();
    sleep(2000);
    //点击看广告
    // c1_checkMoreAd();
    click(519,1352); //暂时识别不了text，只能先
    //关闭广告
    c1_closeAd();
    sleep(2000);
    // while
    var isMoreAd = true;
    while (isMoreAd) {
        
       //判断是否继续看广告
        let oneMore = text("领取奖励").findOnce();
        if(oneMore){
            myClick(oneMore);
            
            //看广告
            myWatchingAd();
            
            //关闭广告
            c1_closeAd();
            sleep(2000);
            console.log("还有广告，continue while");
            continue;
        }
        
        //判断是否有弹窗
        var txt = text("放弃奖励").findOnce();
        if (txt) {
            //关闭弹窗
            myClick(txt);
            console.log("放弃奖励");
        } else {
            isMoreAd = false;
            console.log("没有广告了");
        }

        //抖音看完广告会出现“评价并收下金币”弹窗
        let  txtFinish = text("评价并收下金币").desc("评价并收下金币").className("com.lynx.tasm.behavior.ui.text.FlattenUIText").packageName("com.ss.android.ugc.aweme.lite").findOnce();
        if(txtFinish){
            isMoreAd = false;
            myClick(txtFinish);
            console.log("评价并收下金币");
        }
    }
    
    console.log("开宝箱结束");
}

module.exports = bizObj;    